﻿using Core.Database;
using Entity.Core;
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entity.Core.Config
{
    /// <summary>
    /// 接口配置 , 表： api_config
    /// </summary>
    [JsonObject(MemberSerialization.OptIn), Table(Name = "api_config")]
    [Index($"uk_api_config_sid", "sid", true)]
    public class ApiConfigEntity: CommonBaseEntity,ILocalDataStorageEntity
    {
        #region 属性

        // 忽略生成字段 - id - 自增主键;数据库的自增主键

        // 忽略生成字段 - sid - 雪花Id，所有的外键均使用该字段

        #region api键;通过该字段实例化到具体的类

        /// <summary>
        /// api键;通过该字段实例化到具体的类
        /// </summary>
        [JsonProperty("api_key", Order = 2)]
        [Column(Name = "api_key", StringLength = 128, Position = 2)]
        [Display(Name = "api键")]
        public virtual string? ApiKey { get; set; }

        #endregion api键;通过该字段实例化到具体的类


        #region 配置名称

        /// <summary>
        /// 配置名称
        /// </summary>
        [JsonProperty("api_name", Order = 3)]
        [Column(Name = "api_name", StringLength = 32, Position = 3)]
        [Display(Name = "配置名称")]
        public virtual string? ApiName { get; set; }

        #endregion 配置名称

        #region 配置分组

        /// <summary>
        /// 配置分组
        /// </summary>
        [JsonProperty("api_group", Order = 3)]
        [Column(Name = "api_group", StringLength = 64, Position = 3)]
        [Display(Name = "配置分组")]
        public virtual string? ApiGroup { get; set; }

        #endregion 配置分组

        #region 配置说明

        /// <summary>
        /// 配置说明
        /// </summary>
        [JsonProperty("api_description", Order = 4)]
        [Column(Name = "api_description", StringLength = 900, Position = 4)]
        [Display(Name = "配置说明")]
        public virtual string? ApiDescription { get; set; }

        #endregion 配置说明

        // 忽略生成字段 - sort_number - 排序号

        #region 是否启用;0:否;1:是

        /// <summary>
        /// 是否启用;0:否;1:是
        /// </summary>
        [JsonProperty("is_enabled", Order = 5)]
        [Column(Name = "is_enabled", Position = 5)]
        [Display(Name = "是否启用")]
        public virtual sbyte? IsEnabled { get; set; }

        #endregion 是否启用;0:否;1:是

        // 忽略生成字段 - remark - 备注

        // 忽略生成字段 - created_by - 创建人

        // 忽略生成字段 - created_by_name - 创建人名称;创建人名称冗余存储

        // 忽略生成字段 - created_time - 创建时间

        // 忽略生成字段 - updated_by - 更新人

        // 忽略生成字段 - updated_by_name - 更新人名称;修改人名称冗余存储

        // 忽略生成字段 - updated_time - 更新时间

        // 忽略生成字段 - revision - 乐观锁;用于数据并发操作时使用,数据每次更新后，改变此值

        // 忽略生成字段 - is_deleted - 删除标识;用于标识数据是否逻辑删除(软删) 0:否;1:是
        #endregion 属性
    }
}
